Cosmo 3D brings Silicon Graphics' expertise in real-time, interactive 3D graphics to the Internet and the desktop for mainstream Personal Computers and Workstations.


CosmoTM 3D is a VRML 2.0 Software Development Kit (SDK) and is part of Silicon Graphics' CosmoTM line of sofware solutions for the Web. Cosmo 3D is a C++ application programming interface (API) designed to support high performance, interactive, and real-time 3D graphics applications across a range of platforms from PCs to Workstations.

3D Toolkit for VRML 2.0
Cosmo 3D provides support for all the semantics of VRML 2.0, including fields, events, and routes. Objects and methods are available for reading, writing, and rendering VRML files in addition to the classes necessary for building animation and gaming applications such as morphing nodes, which, for example, would enable real-time facial animation for computer generated characters (see insert).

3D Toolkit for JavaTM and the Internet
Cosmo 3D is a graphics library which supports Java3DTM and provides an efficient Java binding between a Java application and the natively-compiled Cosmo 3D libraries. Java3D was defined through a joint effort by Apple, Intel, Silicon Graphics, and Sun Microsystems.

Built on Industry Standards
Cosmo 3D has been designed to be independent of the underlying rendering architecture. To achieve the highest performance and the broadest platform acceptance, it has been implemented on top of OpenGL®. For unaccelerated, mainstream PC users running WindowsTM 95 or Windows TM NT, Cosmo 3D uses CosmoTM GL, a complementary special implementation of OpenGL tuned specifically for maximum software-rendering performance on the PC. Cosmo GL for the PC is available directly from Silicon Graphics (See http://www.sgi.com/Technology/OpenGL).

3D Audio and Graphics Features


(back page)

Cosmo 3D Contents (All classes accessible from C++ and JavaTM)

Inheritance and Class Hierarchy
Base - Abstract base class for all Cosmo 3D classes which contain fields
FieldSpec - Specifies the fields of a class by listing the fields that an instance of the class contains
Clock - Implements a clock object

Fundamentals
Scene Graph - A directed acyclic graph (DAG) of nodes which represent a database
Node - The abstract base class for objects which may be connected in a scene graph
Fields - Simple data types that define the persistent state of an object

Graphics State
Context - Manages state of rendering engine
Appearance - Encapsulates the graphics modes and attributes that define the appearance of geometry
Material - Defines the light reflectance characteristics of a surface
Texture - Defines an image which may be applied to a surface for increased realism
TexTransform - Defines a transformation matrix for texture coordinates
TexGen - Automatically generates texture coordinates from geometry's vertex coordinates

Geometry
Geometry - The abstract base class for geometric primitives
GeoSet - A collection of like primitives
PointSet - A collection of equally-sized points
LineStripSet - A collection of linestrips (polylines) of equal width
TriStripSet - A collection of triangle strips
PolySet - A collection of polygons
IndexedFaceSet - A VRML 2.0 set of polygons
IndexedLineSet - A VRML 2.0 set of polylines
Sprite - A rectangle which is rotated to face the viewer
Text3D - 3 dimensional text class

Grouping Nodes
Group - A Node which may have other Nodes as children
Switch - A Group which selects none, one, or all of its children depending on its value
LOD - A Switch which selects amongst its children based on its distance from the eyepoint
Transform - Defines a 3D, non-projective transformation which applies to all its children
Billboard - A Group that rotates to face the viewer
Environment - A grouping node which defines the scope and effect of Light and Fog

Leaf Nodes
Shape - A leaf node which associates a Geometry with an Appearance
Light - An abstract base class for light sources
DirectionalLight - A directional light source whose origin is at infinity
PointLight - A point light source which radiates equally in all directions
SpotLight - A conical spotlight
Fog - Defines the atmospheric attenuation of light
Sound - Defines the spatial location for a sound in the scene graph

Engines
Script - A VRML Script Engine
Spline - Interpolates an arbitrary, non-uniform spline and outputs a weight array
MorphVec - An Engine that produces a weighted sum of attribute sets
TransformVec - An Engine that transforms a set of coordinates
TexPlayer - A media player Engine

Sensors
CylinderSensor - Maps pointer device motion to a rotation on an invisible cylinder
PlaneSensor - Maps pointer device motion into translation in two dimensions
ProximitySensor - Generates events when entering, exiting, or moving within a box region
SphereSensor - Maps pointer device motion into spherical rotation about a center point
TimeSensor - Generates events as time passes
TouchSensor - Generates events as the pointing device passes over descendant geometry

Sound
Voice - Contains state information about how a Sound should be played
AudioClip - Contains actual sound bytes in a specified format

Traversals
Action - An abstract traversal that maintains state and transformation stacks
DrawAction - Renders a subgraph
IsectAction - Intersects a set of line segments with a subgraph
CompileAction - Optimizes a specified subgraph for more efficient traversal

Cameras and Viewing
Viewport - Defines the portion of a graphics window which is used for rendering
Camera - An abstract base class that defines the viewing parameters used when rendering
OrthoCamera - Defines an orthographic projection
PerspCamera - Defines a perspective projection whose frustum is symmetric

Basic Classes
BitMask - A collection of bits settable individually or as a range
Data - A raw, untyped storage similar in spirit to void *
Array (Template) - Optionally Interleaved array classes
List (Template) - Implements a List
Vec2f - A 2 element floading point vector
Vec3f - A 3 element floating point vector
Vec4f - A 4 element floating point vector
Matrix4f - A 4x4 floating point matrix
Name - A descriptive string Rotation - Axis-amount respresentation of a rotation
Bound - Abstract bounding volume
BoxBound - A rectangular solid bounding volume
SphereBound - A Spherical bounding volume
Frustum - Truncated primitive used for culling
Seg - Line segment used for intersection

Geometry Attribute Collection
CoordSet - A set of coordinates bound to geometry
NormalSet - A set of normals bound to geometry
ColorSet - A set of colors bound to geometry
TexCoordSet - A set of texture coordinates bound to geometry
IndexSet - An optional set of indices for indirection into an attribute collection

Field Types
Single Item Fields - Single-valued field types that can be wired.

	SFDouble, SFEnum, SFRef, SFString, SFInt, SFFloat, SFVec2f,
	SFVec3f, SFVec4f, SFBitMask, SFName, SFMatrix4f, SFRotation
Multiple Item Fields - Multi-valued field types that can be wired.
	MFRef, MFString, MFInt, MFFloat, MFMatrix4f, MFVec2f, MFVec3f,
	MFVec4f, MFRotation


Java and Java3D are trademarks of Sun Microsystems.
Cosmo 3D and Cosmo OpenGL are trademarks of Silicon Graphics, Inc.
OpenGL is a registered trademark of Silicon Graphics, Inc.

Please send comments to: Larry McDonough